using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

namespace MishraReader.Entities.Network
{
    [ContractClass(typeof(INetworkSchedulerContract))]
    public interface INetworkScheduler
    {
        TaskFactory Factory { get; }
    }

    [ContractClassFor(typeof(INetworkScheduler))]
    internal abstract class INetworkSchedulerContract : INetworkScheduler
    {
        
        public TaskFactory Factory
        {
            get
            {
                Contract.Ensures(Contract.Result<TaskFactory>() != null);
                return null;
            }
        }
    }
}